As an increasing amount of information is available electronically, such as over the Internet, the volume and variety of content that can be displayed at any one time for a number of users increases as well. In an example where a user searches for content based on keywords or queries, for example, a large number of items can be returned in a result page. In cases where each result might have a corresponding image, such as in an image search through a search engine, the amount of data that needs to be transferred to the device displaying the page can cause a substantial delay in the overall load time. In order to reduce the load on servers providing such content, many browsers or other client-side graphical user interface (GUI) applications limit the number of connections to a given server or host name at any given time. For example, many such interfaces currently limit a user to two concurrent connections to a host. The limit on the number of connections means that, for a page with 100 images, an average of 50 requests will be needed on each connection to retrieve the images from a common host. In one example electronic environment, as little as 5% of the time is spent downloading an HTML document, with as much as 95% being spent making HTTP requests to fetch components (i.e., images and scripts) in that HTML document. Accordingly, it is desired to reduce the amount of time needed to request and download the components for a page.
One conventional approach is to utilize several servers (real or virtual) or different host names (e.g., images1.hostname.com, images2.hostname.com). In this way, the number of concurrent connections from a single browser can be increased. For example, if there are 50 servers and a browser can have 2 connections to each server, then all 100 images on the example page can be downloaded in parallel. Otherwise, with 2 connections there would potentially be 50 images for each connection on average to be downloaded in sequence (depending on speed and image size the actual number would likely not be split evenly over time between the 2 connections). As should be apparent, however, it is sometimes not practical to have a sufficient number of servers to handle the number of images that can be presented on a given page, as well as try to generate and maintain the links, URLs (uniform resource locators), or other mappings to the images on the various servers or hostnames. This can be particularly problematic where the content changes often. The performance further is not optimal, as there are still 100 separate requests, even if done in parallel, which significantly increases load on the servers and increases network and system traffic. Further still, each image is stored and/or transferred separately, which prevents further compressing the images based on shared characteristics of the images.
Accordingly, among other improvements, it is desirable to improve processes for requesting and/or delivering content in an electronic environment, particularly where the content is determined dynamically and/or comes from multiple sources.